
import java.util.ArrayList;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author rooke
 */
public class Registradores {
    
    private String nomeRegistrador;
    private int valor;
    private String idRegistrador;
    
    //construtor do registrador para a memoria de registradores
    private Registradores(String identReg, String identBin, int valor)
    {
        this.nomeRegistrador=identReg;
        this.valor=valor;
        this.idRegistrador= identBin;
    }
    
    public String getIdRegistrador() {
        return idRegistrador;
    }
    
    public void setValor(int valor)
    {
        this.valor=valor;
    }
    
    public int getValor(){
        
        return this.valor;
    }
    
    public String getNomeReg() {
        return nomeRegistrador;
    }
    
    //inicializa a memoria de registradores, colocando todos com valor igual a 0
    public static ArrayList<Registradores> iniciaRegistradores(){
        
        ArrayList<Registradores> tabelaRegistrador = new ArrayList<Registradores>();
     
        tabelaRegistrador.add(new Registradores("$zero","00000",0));//0
        tabelaRegistrador.add(new Registradores("$at", "00001",0));//1
        tabelaRegistrador.add(new Registradores("$v0","00010",0));//2
        tabelaRegistrador.add(new Registradores("$v1","00011",0));//3
        tabelaRegistrador.add(new Registradores("$a0","00100",0));//4
        tabelaRegistrador.add(new Registradores("$a1","00101",0));//5
        tabelaRegistrador.add(new Registradores("$a2","00110",0));//6
        tabelaRegistrador.add(new Registradores("$a3","00111",0));//7
        tabelaRegistrador.add(new Registradores("$t0","01000",0));//8
        tabelaRegistrador.add(new Registradores("$t1","01001",0));//9
        tabelaRegistrador.add(new Registradores("$t2","01010",0));//10
        tabelaRegistrador.add(new Registradores("$t3","01011",0));//11
        tabelaRegistrador.add(new Registradores("$t4","01100",0));//12
        tabelaRegistrador.add(new Registradores("$t5","01101",0));//13
        tabelaRegistrador.add(new Registradores("$t6","01110",0));//14
        tabelaRegistrador.add(new Registradores("$t7","01111",0));//15
        tabelaRegistrador.add(new Registradores("$s0","10000",0));//16
        tabelaRegistrador.add(new Registradores("$s1","10001",0));//17
        tabelaRegistrador.add(new Registradores("$s2","10010",0));//18
        tabelaRegistrador.add(new Registradores("$s3","10011",0));//19
        tabelaRegistrador.add(new Registradores("$s4","10100",0));//20
        tabelaRegistrador.add(new Registradores("$s5","10101",0));//21
        tabelaRegistrador.add(new Registradores("$s6","10110",0));//22
        tabelaRegistrador.add(new Registradores("$s7","10111",0));//23
        tabelaRegistrador.add(new Registradores("$t8","11000",0));//24
        tabelaRegistrador.add(new Registradores("$t9","11001",0));//25
        tabelaRegistrador.add(new Registradores("$k0","11010",0));//26
        tabelaRegistrador.add(new Registradores("$k1","11011",0));//27
        tabelaRegistrador.add(new Registradores("$gp","11100",0));//28 
        tabelaRegistrador.add(new Registradores("$sp","11101",0));//29
        tabelaRegistrador.add(new Registradores("$fp","11110",0));//30
        tabelaRegistrador.add(new Registradores("$ra","11111",0));//31
        
        return tabelaRegistrador;
    }
    
    public static String imprimeBancoRegistradores(ArrayList<Registradores> tabReg){
        
        String bancoReg = "\n\nRegistrador   -   Valor\n";
        
        for(Registradores reg : tabReg)
        {
             bancoReg = bancoReg.concat(reg.nomeRegistrador + "    -   "+reg.getValor()+"\n");
        }
        
        return bancoReg;
    }
    
//    public void setValor(int valor ) {
//        
//       this.valor=valor;
//       
//    }
  
    
}

